package br.unisal.repository;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.Before;
import org.junit.Test;

import br.unisal.domain.CPF;
import br.unisal.domain.Entregador;

public class EntregadorRepositoryTeste {

	private Entregador entregador1;
	private Entregador entregador2;
	private EntregadorRepository entregadorRepository;
	
	@Before
	public void inicializa(){
		entregadorRepository = new EntregadorRepository();
		entregador1 = new Entregador("Jim", "ariano", new CPF("12233445"));
		entregador2 = new Entregador("bim", "ariano", new CPF("12233446"));
	}
	
	@Test
	public void verificaAdicionaEntregadorERetornaLista() {
		entregadorRepository.adiconaEntregador(entregador1);
		List<Entregador> entregadores = entregadorRepository.retornaListaEntregadores();
		assertEquals(entregadores.contains(entregador1),true);
	}

	@Test
	public void verificaRetornaEntregadorEmArray() {
		Entregador[] entregadores = entregadorRepository.retornaEntregadoresEmArray();
		Boolean contem = false;
		for (Entregador entregador : entregadores){
			if ( entregador.equals(entregador)) contem = true;
		}
		assertEquals(contem,true);
	}
	
	@Test
	public void verificaOrdenacaoDosEntregadoresEmArray() {
		entregadorRepository.adiconaEntregador(entregador1);
		entregadorRepository.adiconaEntregador(entregador2);
		Entregador[] entregadores = entregadorRepository.retornaEntregadoresEmArray();
		Integer posicaoEntregador1 = 0;
		Integer posicaoEntregador2 = 0;
		for ( int indice = 0; indice <= entregadores.length - 1; indice++ ){
			if (entregadores[indice].equals(entregador1)) posicaoEntregador1 = indice;
			if (entregadores[indice].equals(entregador2)) posicaoEntregador2 = indice;
		}
		Boolean resultado = false;
		if (posicaoEntregador1 > posicaoEntregador2) resultado = true;
		assertEquals(true, resultado);
	}
	
	@Test
	public void verificaExcluiEntregador() {
		entregadorRepository.excluiEntregador(entregador1);
		List<Entregador> entregadores = entregadorRepository.retornaListaEntregadores();
		assertEquals(entregadores.contains(entregador1),false);
	}
	
}
